﻿using System;

namespace Smith.AMC.Logging
{
    /// <summary>
    /// ILogger implementation that does nothing.
    /// Used as the default logger for the memcached client.
    /// Users of the memcached client should implement their own ILogger built on their own logging framework.
    /// </summary>
    public class NullLogger : ILogger
    {
        /// <summary>
        /// Logs a warning to the log
        /// if the logger is configured for that log level
        /// </summary>
        /// <param name="logStatement">A Func that will return a string that should be logged</param>
        public void Warn(Func<string> logStatement)
        {
        }

        /// <summary>
        /// Logs a debug statement to the log
        /// if the logger is configured for that log level
        /// </summary>
        /// <param name="logStatement">A Func that will return a string that should be logged</param>
        public void Debug(Func<string> logStatement)
        {
        }

        /// <summary>
        /// Logs an error to the log
        /// if the logger is configured for that log level
        /// </summary>
        /// <param name="logStatement">A Func that will return a string that should be logged</param>
        public void Error(Func<string> logStatement)
        {
        }

        /// <summary>
        /// Logs an exception to the log
        /// if the logger is configured for that log level
        /// </summary>
        /// <param name="logStatement">A Func that will return a string that should be logged</param>
        public void Exception(Func<string> logStatement)
        {
        }

        /// <summary>
        /// Logs a info statement to the log
        /// if the logger is configured for that log level
        /// </summary>
        /// <param name="logStatement">A Func that will return a string that should be logged</param>
        public void Info(Func<string> logStatement)
        {
        }
    }
}
